/*
 * Copyright (c) 2025 [ByteDance Ltd. and/or its affiliates.] and/or its affiliates
 * SPDX-License-Identifier: LGPL v2.1+
*/
#ifndef TE_SMART_CODEC_H
#define TE_SMART_CODEC_H

typedef struct TEAVSmartCodec
{
    void *opaque;
    int  (*create_smart_codec)     (void *opaque, int smart_codec_type, float quality);
    int  (*init_smart_codec)       (void *opaque);
    void (*log_smart_codec_param)  (void *opaque, void *param);
    int  (*collect_codec_info)     (void *opaque, void *bs);
    int  (*reconfig_smart_codec)   (void *opaque, const void* frame, void* resetPar, int* pNeeds_reconfig, int* pNeeds_encode_config);
}TEAVSmartCodec;

typedef struct TEAVDeviceOpaque
{
    void* opaque;
    int (*test_device_lost) (void *);
    void* (*get_d3d11_device)(void *);
}TEAVDeviceOpaque;

#endif
